Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Modular programming</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Modular_programming"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Modular_programming rootpage-Modular_programming skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Modular programming</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p><b>Modular programming</b> is a <a href="Software_development" title="Software development">software development</a> mindset that emphasizes organizing the <a href="Function_(programming)" class="mw-redirect" title="Function (programming)">functions</a> of a <a href="Codebase" title="Codebase">codebase</a> into independent modules – each providing an <a href="Separation_of_concerns" title="Separation of concerns">aspect</a> of a <a href="Computer_program" title="Computer program">computer program</a> in its entirety without providing other aspects.
</p><p>A module <a href="Interface_(computing)" title="Interface (computing)">interface</a> expresses the elements that are provided and required by the module. The elements defined in the interface are detectable by other modules. The <a href="Implementation" title="Implementation">implementation</a> contains the working code that corresponds to the elements declared in the interface. Modular programming is closely related to <a href="Structured_programming" title="Structured programming">structured programming</a> and <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, all having the same goal of facilitating construction of large software programs and systems by <a href="Decomposition_(computer_science)" title="Decomposition (computer science)">decomposition</a> into smaller pieces, and all originating around the 1960s. While the historic use of these terms has been inconsistent, <i>modular programming</i> now refers to the <a href="High-level_programming_language" title="High-level programming language">high-level</a> decomposition of the code of a whole program into pieces: <i>structured programming</i> to the <a href="Low-level_programming_language" title="Low-level programming language">low-level</a> code use of structured <a href="Control_flow" title="Control flow">control flow</a>, and <i>object-oriented programming</i> to the <i>data</i> use of <a href="Object_(computer_science)" title="Object (computer science)">objects</a>, a kind of <a href="Data_structure" title="Data structure">data structure</a>.
</p><p>In object-oriented programming, the use of interfaces as an architectural pattern to construct modules is known as <a href="Interface-based_programming" title="Interface-based programming">interface-based programming</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>Modular programming, in the form of subsystems (particularly for I/O) and software libraries, dates to early software systems, where it was used for <a href="Code_reuse" title="Code reuse">code reuse</a>. Modular programming per se, with a goal of modularity, developed in the late 1960s and 1970s, as a larger-scale analog of the concept of <a href="Structured_programming" title="Structured programming">structured programming</a> (1960s). The term "modular programming" dates at least to the National Symposium on Modular Programming, organized at the Information and Systems Institute in July 1968 by <a href="Larry_Constantine" title="Larry Constantine">Larry Constantine</a>; other key concepts were <a href="Information_hiding" title="Information hiding">information hiding</a> (1972) and <a href="Separation_of_concerns" title="Separation of concerns">separation of concerns</a> (SoC, 1974).
</p><p>Modules were not included in the original specification for <a href="ALGOL_68" title="ALGOL 68">ALGOL 68</a> (1968), but were included as extensions in early implementations, <a href="ALGOL_68-R" title="ALGOL 68-R">ALGOL 68-R</a> (1970) and <a href="ALGOL_68C" title="ALGOL 68C">ALGOL 68C</a> (1970), and later formalized.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> One of the first languages designed from the start for modular programming was the short-lived <a href="Modula" title="Modula">Modula</a> (1975), by <a href="Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a>. Another early modular language was <a href="Mesa_(programming_language)" title="Mesa (programming language)">Mesa</a> (1970s), by <a href="Xerox_PARC" class="mw-redirect" title="Xerox PARC">Xerox PARC</a>, and Wirth drew on Mesa as well as the original Modula in its successor, <a href="Modula-2" title="Modula-2">Modula-2</a> (1978), which influenced later languages, particularly through its successor, <a href="Modula-3" title="Modula-3">Modula-3</a> (1980s). Modula's use of dot-<a href="Qualified_name" class="mw-redirect" title="Qualified name">qualified names</a>, like <code>M.a</code> to refer to object <code>a</code> from module <code>M</code>, coincides with notation to access a field of a record (and similarly for attributes or methods of objects), and is now widespread, seen in <a href="C%2B%2B" title="C++">C++</a>, <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="Dart_(programming_language)" title="Dart (programming language)">Dart</a>, <a href="Go_(programming_language)" title="Go (programming language)">Go</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="OCaml" title="OCaml">OCaml</a>, and <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, among others. Modular programming became widespread from the 1980s: the original <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a> language (1970) did not include modules, but later versions, notably <a href="UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a> (1978) and <a href="Turbo_Pascal" title="Turbo Pascal">Turbo Pascal</a> (1983) included them in the form of "units", as did the Pascal-influenced <a href="Ada_(programming_language)" title="Ada (programming language)">Ada</a> (1980). The Extended Pascal ISO 10206:1990 standard kept closer to Modula2 in its modular support. <a href="Standard_ML" title="Standard ML">Standard ML</a> (1984)<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> has one of the most complete module systems, including <a href="Standard_ML#Module_system" title="Standard ML">functors</a> (parameterized modules) to map between modules.
</p><p>In the 1980s and 1990s, modular programming was overshadowed by and often conflated with <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, particularly due to the popularity of C++ and Java. For example, the C family of languages had support for <a href="Object_(computer_science)" title="Object (computer science)">objects</a> and <a href="Class_(computer_programming)" title="Class (computer programming)">classes</a> in C++ (originally <a href="C_with_Classes" class="mw-redirect" title="C with Classes">C with Classes</a>, 1980) and Objective-C (1983), only supporting modules 30 years or more later. Java (1995) supports modules in the form of <a href="Package_manager" title="Package manager">packages</a>, though the primary unit of code organization is a class. However, Python (1991) prominently used both modules and objects from the start, using modules as the primary unit of code organization and "packages" as a larger-scale unit; and <a href="Perl_5" class="mw-redirect" title="Perl 5">Perl 5</a> (1994) includes support for both modules and objects, with a vast array of modules being available from <a href="CPAN" title="CPAN">CPAN</a> (1993). <a href="OCaml" title="OCaml">OCaml</a> (1996) followed ML by supporting modules and functors.
</p><p>Modular programming is now widespread, and found in virtually all major languages developed since the 1990s. The relative importance of modules varies between languages, and in class-based object-oriented languages there is still overlap and confusion with classes as a unit of organization and encapsulation, but these are both well-established as distinct concepts.
</p>
<div class="mw-heading mw-heading2"><h2 id="Terminology">Terminology</h2></div>
<p>The term <a href="Assembly_(CLI)" title="Assembly (CLI)">assembly</a> (as in <a href=".NET" title=".NET">.NET</a> languages like <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a>, or <a href="Visual_Basic_(.NET)" title="Visual Basic (.NET)">Visual Basic (.NET)</a>) or <a href="Package_manager" title="Package manager">package</a> (as in <a href="Dart_(programming_language)" title="Dart (programming language)">Dart</a>, <a href="Go_(programming_language)" title="Go (programming language)">Go</a>, or <a href="Java_(programming_language)" title="Java (programming language)">Java</a>) is sometimes used instead of <i>module</i>. In other implementations, these are distinct concepts; in <a href="Python_(programming_language)" title="Python (programming language)">Python</a> a package is a set of modules, while in <a href="Java_9" class="mw-redirect" title="Java 9">Java 9</a> the introduction of the <a href="Java_Module_System" class="mw-redirect" title="Java Module System">new module concept</a> (a set of packages with enhanced access control) was implemented.
</p><p>Furthermore, the term "package" has other uses in software (for example .NET <a href="NuGet" title="NuGet">NuGet</a> packages). A <a href="Software_component" title="Software component">component</a> is a similar concept, but typically refers to a higher level; a component is a piece of a whole <a href="Software_system" title="Software system">system</a>, while a module is a piece of an individual program. The scale of the term "module" varies significantly between languages; in Python it is very small-scale and each file is a module, while in <a href="Java_9" class="mw-redirect" title="Java 9">Java 9</a> it is planned to be large-scale, where a module is a set of packages, which are in turn sets of files.
</p><p>Other terms for modules include <i>unit</i>, used in <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a> dialects.
</p>
<div class="mw-heading mw-heading2"><h2 id="Language_support">Language support</h2></div>
<p>Languages that formally support the module concept include <a href="Ada_(programming_language)" title="Ada (programming language)">Ada</a>, <a href="ALGOL" title="ALGOL">ALGOL</a>, <a href="BlitzMax" class="mw-redirect" title="BlitzMax">BlitzMax</a>, <a href="C%2B%2B" title="C++">C++</a>, <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="Clojure" title="Clojure">Clojure</a>, <a href="COBOL" title="COBOL">COBOL</a>, <a href="Common_Lisp" title="Common Lisp">Common Lisp</a>, <a href="D_(programming_language)" title="D (programming language)">D</a>, <a href="Dart_(programming_language)" title="Dart (programming language)">Dart</a>, eC, <a href="Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>, <a href="Elixir_(programming_language)" title="Elixir (programming language)">Elixir</a>, <a href="Elm_(programming_language)" title="Elm (programming language)">Elm</a>, <a href="F_(programming_language)" title="F (programming language)">F</a>, <a href="F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a>, <a href="Fortran" title="Fortran">Fortran</a>, <a href="Go_(programming_language)" title="Go (programming language)">Go</a>, <a href="Haskell" title="Haskell">Haskell</a>, <a href="IBM/360" class="mw-redirect" title="IBM/360">IBM/360</a> <a href="IBM_Basic_assembly_language_and_successors" title="IBM Basic assembly language and successors">Assembler</a>, <a href="Control_Language" title="Control Language">Control Language</a> (CL), <a href="IBM_RPG" title="IBM RPG">IBM RPG</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="Julia_(programming_language)" title="Julia (programming language)">Julia</a>, <a href="MATLAB" title="MATLAB">MATLAB</a>, <a href="ML_(programming_language)" title="ML (programming language)">ML</a>, <a href="Modula" title="Modula">Modula</a>, <a href="Modula-2" title="Modula-2">Modula-2</a>, <a href="Modula-3" title="Modula-3">Modula-3</a>, Morpho, <a href="NEWP" class="mw-redirect" title="NEWP">NEWP</a>, <a href="Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a>, <a href="Oberon-2" title="Oberon-2">Oberon-2</a>, <a href="Objective-C" title="Objective-C">Objective-C</a>, <a href="OCaml" title="OCaml">OCaml</a>, several <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a> derivatives (<a href="Component_Pascal" title="Component Pascal">Component Pascal</a>, <a href="Object_Pascal" title="Object Pascal">Object Pascal</a>, <a href="Turbo_Pascal" title="Turbo Pascal">Turbo Pascal</a>, <a href="UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a>), <a href="Perl" title="Perl">Perl</a>, <a href="PHP" title="PHP">PHP</a>, <a href="PL/I" title="PL/I">PL/I</a>, <a href="PureBasic" title="PureBasic">PureBasic</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="R_(programming_language)" title="R (programming language)">R</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> <a href="Rust_(programming_language)" title="Rust (programming language)">Rust</a>, <a href="JavaScript" title="JavaScript">JavaScript</a>,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> <a href="Visual_Basic_(.NET)" title="Visual Basic (.NET)">Visual Basic (.NET)</a> and WebDNA.
</p><p>In the Java programming language, the term "package" is used for the analog of modules in the JLS;<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> — see <a href="Java_package" title="Java package">Java package</a>. "<a href="Java_Module_System" class="mw-redirect" title="Java Module System">Modules</a>", a kind of set of packages, were introduced in <a href="Java_9" class="mw-redirect" title="Java 9">Java 9</a> as part of <a rel="nofollow" class="external text" href="http://openjdk.java.net/projects/jigsaw/">Project Jigsaw</a>; these were earlier called "superpackages" were planned for Java 7.
</p><p>Conspicuous examples of languages that lack support for modules are <a href="C_(programming_language)" title="C (programming language)">C</a> and have been <a href="C%2B%2B" title="C++">C++</a> and Pascal in their original form, <a href="C_(programming_language)" title="C (programming language)">C</a> and <a href="C%2B%2B" title="C++">C++</a> do, however, allow separate compilation and declarative interfaces to be specified using <a href="Header_file" class="mw-redirect" title="Header file">header files</a>. Modules were added to Objective-C in <a href="IOS_7" title="IOS 7">iOS 7</a> (2013); to C++ with <a href="C%2B%2B20" title="C++20">C++20</a>,<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> and Pascal was superseded by <a href="Modula" title="Modula">Modula</a> and <a href="Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a>, which included modules from the start, and various derivatives that included modules. <a href="JavaScript" title="JavaScript">JavaScript</a> has had native modules since <a href="ECMAScript" title="ECMAScript">ECMAScript</a> 2015. <a href="Modules_(C%2B%2B)" title="Modules (C++)">C++ modules</a> have allowed backwards compatibility with headers (with "header units"). Dialects of C allow for modules, for example <a href="Clang" title="Clang">Clang</a> supports <a href="Modules_(C%2B%2B)#Clang_C_modules" title="Modules (C++)">modules for the C language</a>,<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> though the syntax and semantics of Clang C modules differ from C++ modules significantly.
</p><p>Modular programming can be performed even where the programming language lacks explicit syntactic features to support named modules, like, for example, in C. This is done by using existing language features, together with, for example, <a href="Coding_conventions" title="Coding conventions">coding conventions</a>, <a href="Programming_idioms" class="mw-redirect" title="Programming idioms">programming idioms</a> and the physical code structure. <a href="IBM_i" title="IBM i">IBM i</a> also uses modules when programming in the <a href="Integrated_Language_Environment" title="Integrated Language Environment">Integrated Language Environment</a> (ILE).
</p>
<div class="mw-heading mw-heading2"><h2 id="Key_aspects">Key aspects</h2></div>
<p>With modular programming, <a href="Separation_of_concerns" title="Separation of concerns">concerns are separated</a> such that modules perform logically discrete functions, interacting through well-defined interfaces. Often modules form a <a href="Directed_acyclic_graph" title="Directed acyclic graph">directed acyclic graph</a> (DAG); in this case a cyclic dependency between modules is seen as indicating that these should be a single module. In the case where modules do form a DAG they can be arranged as a hierarchy, where the lowest-level modules are independent, depending on no other modules, and higher-level modules depend on lower-level ones. A particular program or library is a top-level module of its own hierarchy, but can in turn be seen as a lower-level module of a higher-level program, library, or system.
</p><p>When creating a modular system, instead of creating a monolithic application (where the smallest component is the whole), several smaller modules are written separately so when they are composed together, they construct the executable application program. Typically, these are also <a href="Compiler" title="Compiler">compiled</a> separately, via separate compilation, and then linked by a <a href="Linker_(computing)" title="Linker (computing)">linker</a>. A <a href="Just-in-time_compilation" title="Just-in-time compilation">just-in-time compiler</a> may perform some of this construction "on-the-fly" at <a href="Run_time_(program_lifecycle_phase)" class="mw-redirect" title="Run time (program lifecycle phase)">run time</a>.
</p><p>These independent functions are commonly classified as either program control functions or specific task functions. Program control functions are designed to work for one program. Specific task functions are closely prepared to be applicable for various programs.
</p><p>This makes modular designed systems, if built correctly, far more reusable than a traditional monolithic design, since all (or many) of these modules may then be reused (without change) in other projects. This also facilitates the "breaking down" of projects into several smaller projects. Theoretically, a modularized software project will be more easily assembled by large teams, since no team members are creating the whole system, or even need to know about the system as a whole. They can focus just on the assigned smaller task.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Architecture_description_language" title="Architecture description language">Architecture description language</a>&nbsp;– Standardized language on architecture description</li>
<li><a href="Cohesion_(computer_science)" title="Cohesion (computer science)">Cohesion (computer science)</a>&nbsp;– Degree to which elements within a module belong together</li>
<li><a href="Component-based_software_engineering" title="Component-based software engineering">Component-based software engineering</a>&nbsp;– Engineering focused on building software from reusable components</li>
<li><a href="Conway's_law" title="Conway's law">Conway's law</a>&nbsp;– Adage linking organization and system structure</li>
<li><a href="Coupling_(computer_science)" class="mw-redirect" title="Coupling (computer science)">Coupling (computer science)</a>&nbsp;– Degree of interdependence between software modules<span style="display:none" class="category-annotation-with-redirected-description">Pages displaying short descriptions of redirect targets</span></li>
<li><a href="Cross-cutting_concern" title="Cross-cutting concern">Cross-cutting concern</a>&nbsp;– Concept in aspect-oriented software development</li>
<li><a href="David_Parnas" title="David Parnas">David Parnas</a>&nbsp;– Canadian software engineer</li>
<li><a href="Information_hiding" title="Information hiding">Information hiding</a>&nbsp;– Principle of computer program design</li>
<li><a href="Library_(computing)" title="Library (computing)">Library (computing)</a>&nbsp;– Collection of resources used to develop a computer program</li>
<li><a href="List_of_system_quality_attributes" title="List of system quality attributes">List of system quality attributes</a>&nbsp;– Non-functional requirements for system evaluation</li>
<li><a href="Modular_design" title="Modular design">Modular design</a>&nbsp;– Design approach</li>
<li><a href="Plug-in_(computing)" title="Plug-in (computing)">Plug-in (computing)</a>&nbsp;– Software component that extends the functionality of existing software</li>
<li><a href="Snippet_(programming)" title="Snippet (programming)">Snippet (programming)</a>&nbsp;– Small region of re-usable source code, machine code, or text</li>
<li><a href="Structured_analysis" title="Structured analysis">Structured analysis</a>&nbsp;– Software engineering method</li>
<li><a href="Structured_programming" title="Structured programming">Structured programming</a>&nbsp;– Programming paradigm based on control flow</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFLindsey1976" class="citation journal cs1"><a href="Charles_H._Lindsey" title="Charles H. Lindsey">Lindsey, Charles H.</a> (Feb 1976). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160303230037/http://archive.computerhistory.org/resources/text/algol/ACM_Algol_bulletin/1061719/p19-lindsey.pdf">"Proposal for a Modules Facility in ALGOL 68"</a> <span class="cs1-format">(PDF)</span>. <i>ALGOL Bulletin</i> (39): <span class="nowrap">20–</span>29. Archived from <a rel="nofollow" class="external text" href="http://archive.computerhistory.org/resources/text/algol/ACM_Algol_bulletin/1061719/p19-lindsey.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2016-03-03<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-12-01</span></span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFDavid_MacQueen1984" class="citation conference cs1">David MacQueen (August 1984). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/pdf/10.1145/800055.802036">"Modules for Standard ML"</a>. <i>LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming</i>. pp.&nbsp;<span class="nowrap">198–</span>207. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F800055.802036">10.1145/800055.802036</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.ruby-lang.org/en/master/Module.html">"class Module - Documentation for Ruby 3.5"</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.ecma-international.org/ecma-262/6.0/#sec-modules">ECMAScript® 2015 Language Specification, 15.2 Modules</a></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text">James Gosling, Bill Joy, Guy Steele, Gilad Bracha, <i>The Java Language Specification, Third Edition</i>, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-321-24678-0</bdi>, 2005. In the Introduction, it is stated "Chapter 7 describes the structure of a program, which is organized into packages similar to the modules of Modula." The word "module" has no special meaning in Java.</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://isocpp.org/files/papers/n4720.pdf">"N4720: Working Draft, Extensions to C++ for Modules"</a> <span class="cs1-format">(PDF)</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://clang.llvm.org/docs/Modules.html">"Modules"</a>. <i>clang.llvm.org</i>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://medium.com/@wrong.about/how-to-decompose-a-system-into-modules-796bd941f036">How To Decompose a System into Modules</a></li>
<li><a rel="nofollow" class="external text" href="http://www.smcsystem.ru/">SMC Platform</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Programming_paradigms_(Comparison_by_language)368" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Programming_paradigms_(Comparison_by_language)368" style="font-size:114%;margin:0 4em"><a href="Programming_paradigm" title="Programming paradigm">Programming paradigms</a> (<a href="Comparison_of_multi-paradigm_programming_languages" title="Comparison of multi-paradigm programming languages">Comparison by language</a>)</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Imperative_programming" title="Imperative programming">Imperative</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Structured_programming" title="Structured programming">Structured</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Jackson_structured_programming" title="Jackson structured programming">Jackson structures</a></li>
<li><a href="Block_(programming)" title="Block (programming)">Block-structured</a></li>

<li><a href="Non-structured_programming" title="Non-structured programming">Non-structured</a></li>
<li><a href="Procedural_programming" title="Procedural programming">Procedural</a></li>
<li><a href="Programming_in_the_large_and_programming_in_the_small" title="Programming in the large and programming in the small">Programming in the large and in the small</a></li>
<li><a href="Design_by_contract" title="Design by contract">Design by contract</a></li>
<li><a href="Invariant-based_programming" title="Invariant-based programming">Invariant-based</a></li>
<li><a href="Nested_function" title="Nested function">Nested function</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Object-oriented_programming" title="Object-oriented programming">Object-oriented</a><br>(<a href="Comparison_of_programming_languages_(object-oriented_programming)" title="Comparison of programming languages (object-oriented programming)">comparison</a>, <a href="List_of_object-oriented_programming_languages" title="List of object-oriented programming languages">list</a>)</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Class-based_programming" title="Class-based programming">Class-based</a>, <a href="Prototype-based_programming" title="Prototype-based programming">Prototype-based</a>, <a href="Object-based_language" title="Object-based language">Object-based</a></li>
<li><a href="Agent-oriented_programming" title="Agent-oriented programming">Agent</a></li>
<li><a href="Immutable_object" title="Immutable object">Immutable object</a></li>
<li><a href="Persistent_programming_language" title="Persistent programming language">Persistent</a></li>
<li><a href="Uniform_function_call_syntax" title="Uniform function call syntax">Uniform function call syntax</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Declarative_programming" title="Declarative programming">Declarative</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Functional_programming" title="Functional programming">Functional</a><br>(<a href="Comparison_of_functional_programming_languages" title="Comparison of functional programming languages">comparison</a>)</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Recursion_(computer_science)" title="Recursion (computer science)">Recursive</a></li>
<li><a href="Anonymous_function" title="Anonymous function">Anonymous function</a> (<a href="Partial_application" title="Partial application">Partial application</a>)</li>
<li><a href="Higher-order_programming" title="Higher-order programming">Higher-order</a></li>
<li><a href="Purely_functional_programming" title="Purely functional programming">Purely functional</a></li>
<li><a href="Total_functional_programming" title="Total functional programming">Total</a></li>
<li><a href="Strict_programming_language" title="Strict programming language">Strict</a></li>
<li><a href="Generalized_algebraic_data_type" title="Generalized algebraic data type">GADTs</a></li>
<li><a href="Dependent_type" title="Dependent type">Dependent types</a></li>
<li><a href="Functional_logic_programming" title="Functional logic programming">Functional logic</a></li>
<li><a href="Tacit_programming" title="Tacit programming">Point-free style</a></li>
<li><a href="Expression-oriented_programming_language" title="Expression-oriented programming language">Expression-oriented</a></li>
<li><a href="Applicative_programming_language" title="Applicative programming language">Applicative</a>, <a href="Concatenative_programming_language" title="Concatenative programming language">Concatenative</a></li>
<li><a href="Function-level_programming" title="Function-level programming">Function-level</a>, <a href="Value-level_programming" title="Value-level programming">Value-level</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Dataflow_programming" title="Dataflow programming">Dataflow</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Flow-based_programming" title="Flow-based programming">Flow-based</a></li>
<li><a href="Reactive_programming" title="Reactive programming">Reactive</a> (<a href="Functional_reactive_programming" title="Functional reactive programming">Functional reactive</a>)</li>
<li><a href="Signal_programming" class="mw-redirect" title="Signal programming">Signals</a></li>
<li><a href="Stream_processing" title="Stream processing">Streams</a></li>
<li><a href="Synchronous_programming_language" title="Synchronous programming language">Synchronous</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Logic_programming" title="Logic programming">Logic</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Abductive_logic_programming" title="Abductive logic programming">Abductive logic</a></li>
<li><a href="Answer_set_programming" title="Answer set programming">Answer set</a></li>
<li><a href="Constraint_programming" title="Constraint programming">Constraint</a> (<a href="Constraint_logic_programming" title="Constraint logic programming">Constraint logic</a>)</li>
<li><a href="Inductive_logic_programming" title="Inductive logic programming">Inductive logic</a></li>
<li><a href="Nondeterministic_programming" title="Nondeterministic programming">Nondeterministic</a></li>
<li><a href="Ontology_language" title="Ontology language">Ontology</a></li>
<li><a href="Probabilistic_logic_programming" title="Probabilistic logic programming">Probabilistic logic</a></li>
<li><a href="Query_language" title="Query language">Query</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Domain-specific_language" title="Domain-specific language">DSL</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Algebraic_modeling_language" title="Algebraic modeling language">Algebraic modeling</a></li>
<li><a href="Array_programming" title="Array programming">Array</a></li>
<li><a href="Automata-based_programming" title="Automata-based programming">Automata-based</a> (<a href="Action_language" title="Action language">Action</a>)</li>
<li><a href="Command_language" title="Command language">Command</a> (<a href="Spacecraft_command_language" title="Spacecraft command language">Spacecraft</a>)</li>
<li><a href="Differentiable_programming" title="Differentiable programming">Differentiable</a></li>
<li><a href="End-user_development" title="End-user development">End-user</a></li>
<li><a href="Grammar-oriented_programming" title="Grammar-oriented programming">Grammar-oriented</a></li>
<li><a href="Interface_description_language" title="Interface description language">Interface description</a></li>
<li><a href="Language-oriented_programming" title="Language-oriented programming">Language-oriented</a></li>
<li><a href="List_comprehension" title="List comprehension">List comprehension</a></li>
<li><a href="Low-code_development_platform" title="Low-code development platform">Low-code</a></li>
<li><a href="Modeling_language" title="Modeling language">Modeling</a></li>
<li><a href="Natural-language_programming" class="mw-redirect" title="Natural-language programming">Natural language</a></li>
<li><a href="Non-English-based_programming_languages" title="Non-English-based programming languages">Non-English-based</a></li>
<li><a href="Page_description_language" title="Page description language">Page description</a></li>
<li><a href="Pipeline_(software)" title="Pipeline (software)">Pipes</a> and <a href="Filter_(software)" title="Filter (software)">filters</a></li>
<li><a href="Probabilistic_programming" title="Probabilistic programming">Probabilistic</a></li>
<li><a href="Quantum_programming" title="Quantum programming">Quantum</a></li>
<li><a href="Scientific_programming_language" title="Scientific programming language">Scientific</a></li>
<li><a href="Scripting_language" title="Scripting language">Scripting</a></li>
<li><a href="Set_theoretic_programming" title="Set theoretic programming">Set-theoretic</a></li>
<li><a href="Simulation_language" title="Simulation language">Simulation</a></li>
<li><a href="Stack-oriented_programming" title="Stack-oriented programming">Stack-based</a></li>
<li><a href="System_programming_language" title="System programming language">System</a></li>
<li><a href="Tactile_programming_language" title="Tactile programming language">Tactile</a></li>
<li><a href="Template_processor" title="Template processor">Templating</a></li>
<li><a href="Transformation_language" title="Transformation language">Transformation</a> (<a href="Graph_rewriting" title="Graph rewriting">Graph rewriting</a>, <a href="Production_system_(computer_science)" title="Production system (computer science)">Production</a>, <a href="Pattern_matching" title="Pattern matching">Pattern</a>)</li>
<li><a href="Visual_programming_language" title="Visual programming language">Visual</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Concurrent_computing" title="Concurrent computing">Concurrent</a>,<br><a href="Distributed_computing" title="Distributed computing">distributed</a>,<br><a href="Parallel_computing" title="Parallel computing">parallel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Actor_model" title="Actor model">Actor-based</a></li>
<li><a href="Automatic_mutual_exclusion" title="Automatic mutual exclusion">Automatic mutual exclusion</a></li>
<li><a href="Choreographic_programming" title="Choreographic programming">Choreographic programming</a></li>
<li><a href="Concurrent_logic_programming" title="Concurrent logic programming">Concurrent logic</a> (<a href="Concurrent_constraint_logic_programming" title="Concurrent constraint logic programming">Concurrent constraint logic</a>)</li>
<li><a href="Concurrent_object-oriented_programming" title="Concurrent object-oriented programming">Concurrent OO</a></li>
<li><a href="Macroprogramming" title="Macroprogramming">Macroprogramming</a></li>
<li><a href="Multitier_programming" title="Multitier programming">Multitier programming</a></li>
<li><a href="Organic_computing" title="Organic computing">Organic computing</a></li>
<li><a href="Parallel_programming_model" title="Parallel programming model">Parallel programming models</a></li>
<li><a href="Partitioned_global_address_space" title="Partitioned global address space">Partitioned global address space</a></li>
<li><a href="Process-oriented_programming" title="Process-oriented programming">Process-oriented</a></li>
<li><a href="Relativistic_programming" title="Relativistic programming">Relativistic programming</a></li>
<li><a href="Service-oriented_programming" title="Service-oriented programming">Service-oriented</a></li>
<li><a href="Structured_concurrency" title="Structured concurrency">Structured concurrency</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Metaprogramming" title="Metaprogramming">Metaprogramming</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Attribute-oriented_programming" title="Attribute-oriented programming">Attribute-oriented</a></li>
<li><a href="Automatic_programming" title="Automatic programming">Automatic</a> (<a href="Inductive_programming" title="Inductive programming">Inductive</a>)</li>
<li><a href="Dynamic_programming_language" title="Dynamic programming language">Dynamic</a></li>
<li><a href="Extensible_programming" title="Extensible programming">Extensible</a></li>
<li><a href="Generic_programming" title="Generic programming">Generic</a></li>
<li><a href="Homoiconicity" title="Homoiconicity">Homoiconicity</a></li>
<li><a href="Interactive_programming" title="Interactive programming">Interactive</a></li>
<li><a href="Macro_(computer_science)" title="Macro (computer science)">Macro</a> (<a href="Hygienic_macro" title="Hygienic macro">Hygienic</a>)</li>
<li><a href="Metalinguistic_abstraction" title="Metalinguistic abstraction">Metalinguistic abstraction</a></li>
<li><a href="Multi-stage_programming" title="Multi-stage programming">Multi-stage</a></li>
<li><a href="Program_synthesis" title="Program synthesis">Program synthesis</a> (<a href="Bayesian_program_synthesis" title="Bayesian program synthesis">Bayesian</a>, <a href="Inferential_programming" title="Inferential programming">Inferential</a>, <a href="Programming_by_demonstration" title="Programming by demonstration">by demonstration</a>, <a href="Programming_by_example" title="Programming by example">by example</a>)</li>
<li><a href="Reflective_programming" title="Reflective programming">Reflective</a></li>
<li><a href="Self-modifying_code" title="Self-modifying code">Self-modifying code</a></li>
<li><a href="Symbolic_programming" title="Symbolic programming">Symbolic</a></li>
<li><a href="Template_metaprogramming" title="Template metaprogramming">Template</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Separation_of_concerns" title="Separation of concerns">Separation<br>of concerns</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Aspect-oriented_programming" title="Aspect-oriented programming">Aspects</a></li>
<li><a href="Component-based_software_engineering" title="Component-based software engineering">Components</a></li>
<li><a href="Data-driven_programming" title="Data-driven programming">Data-driven</a></li>
<li><a href="Data-oriented_design" title="Data-oriented design">Data-oriented</a></li>
<li><a href="Event-driven_programming" title="Event-driven programming">Event-driven</a></li>
<li><a href="Feature-oriented_programming" title="Feature-oriented programming">Features</a></li>
<li><a href="Literate_programming" title="Literate programming">Literate</a></li>
<li><a href="Role-oriented_programming" title="Role-oriented programming">Roles</a></li>
<li><a href="Subject-oriented_programming" title="Subject-oriented programming">Subjects</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox authority-control" aria-labelledby="Authority_control_databases_frameless&amp;#124;text-top&amp;#124;10px&amp;#124;alt=Edit_this_at_Wikidata&amp;#124;link=https&amp;#58;//www.wikidata.org/wiki/Q6453666#identifiers&amp;#124;class=noprint&amp;#124;Edit_this_at_Wikidata904" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Authority_control_databases_frameless&amp;#124;text-top&amp;#124;10px&amp;#124;alt=Edit_this_at_Wikidata&amp;#124;link=https&amp;#58;//www.wikidata.org/wiki/Q6453666#identifiers&amp;#124;class=noprint&amp;#124;Edit_this_at_Wikidata904" style="font-size:114%;margin:0 4em">Authority control databases </div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">National</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh85086464">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://catalogue.bnf.fr/ark:/12148/cb133251240">France</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://data.bnf.fr/ark:/12148/cb133251240">BnF data</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.ndl.go.jp/auth/ndlna/00567885">Japan</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007541016305171">Israel</a></span></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://lux.collections.yale.edu/view/concept/218c3fae-b2c4-455b-804e-b1fa760d5fbf">Yale LUX</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-01" href="https://en.wikipedia.org/wiki/?title=Modular_programming&amp;oldid=1303607795">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>